package com.ruoyi.smart.service.impl;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ruoyi.smart.domain.*;
import com.ruoyi.smart.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.smart.mapper.SmartProductMapper;

/**
 * 产品Service业务层处理
 * 
 * @author minwei
 * @date 2022-04-19
 */
@Service
public class SmartProductServiceImpl implements ISmartProductService 
{
    @Autowired
    private SmartProductMapper smartProductMapper;
    @Autowired
    private ISmartProductTestService smartProductTestService;
    @Autowired
    private ISmartProductModelService smartProductModelService;
    @Autowired
    private ISmartModDataService smartModDataService;
    @Autowired
    private ISmartPlanTaskService smartPlanTaskService;

    /**
     * 查询产品
     * 
     * @param id 产品主键
     * @return 产品
     */
    @Override
    public SmartProduct selectSmartProductById(Long id)
    {
        return smartProductMapper.selectSmartProductById(id);
    }

    /**
     * 查询产品列表
     * 
     * @param smartProduct 产品
     * @return 产品
     */
    @Override
    public List<SmartProduct> selectSmartProductList(SmartProduct smartProduct)
    {
        return smartProductMapper.selectSmartProductList(smartProduct);
    }


    /**
     * 参数分别是：
     * 1.组织机构（参数：0,null 所有机构，其他参数：机构id）
     * 2.产品计划（参数：0,null 所有计划，其他参数：计划）
     * 3.产品型号（参数：0,null 所有产品型号，其他参数：产品型号）
     *
     * @return 产品集合
     */
    @Override
    public List<SmartProduct> selectSmartProductList(String organization,String plan,String productModel,SmartProduct smartProduct){
        List<SmartProduct> list=null;
        //设置为默认的产品   //这个算法有错误
        //smartProduct.setModel("7");
        if(productModel==null||"".equals(productModel)||"0".equals(productModel)){
            //无产品
            if(plan==null||"".equals(plan)||"0".equals(plan)){
                if(organization==null||"".equals(organization)||"0".equals(organization)){
                    list=smartProductMapper.selectSmartProductList(smartProduct);
                }else {
                    SmartPlanTask smartPlanTask=new SmartPlanTask();
                    smartPlanTask.setOrganizeorganazId(Long.valueOf(organization));
                    List<SmartPlanTask> smartPlanTasks=smartPlanTaskService.selectSmartPlanTaskList(smartPlanTask);
                    for(SmartPlanTask item : smartPlanTasks){
                            smartProduct.setModel(String.valueOf(item.getProductId()));
                            list.addAll(smartProductMapper.selectSmartProductList(smartProduct));
                    }
                }
            }else
            {
                SmartPlanTask smartPlanTask=smartPlanTaskService.selectSmartPlanTaskById(Long.valueOf(plan));
                if(smartPlanTask!=null){
                        smartProduct.setModel(String.valueOf(smartPlanTask.getProductId()));
                        list=smartProductMapper.selectSmartProductList(smartProduct);
                }
            }
        }else
        {
            //有产品
                smartProduct.setModel(productModel);
                list=smartProductMapper.selectSmartProductList(smartProduct);
        }
        return list;
    }

    /**
     * 新增产品
     * 
     * @param smartProduct 产品
     * @return 结果
     */
    @Override
    public int insertSmartProduct(SmartProduct smartProduct)
    {
        return smartProductMapper.insertSmartProduct(smartProduct);
    }

    /**
     * 修改产品
     * 
     * @param smartProduct 产品
     * @return 结果
     */
    @Override
    public int updateSmartProduct(SmartProduct smartProduct)
    {
        return smartProductMapper.updateSmartProduct(smartProduct);
    }

    /**
     * 获取质量数据
     *
     * @param id 产品id
     * @return 结果
     */
    @Override
    public Map<String,Object> quality(Long id)
    {
        Map<String,Object> map=new HashMap<>();
        SmartProduct smartProduct=smartProductMapper.selectSmartProductById(id);
        map.put("产品型号",smartProduct.getSmartProductModel().getNameZh());
        map.put("产品类型",smartProduct.getSmartProductModel().getNameUs());
        map.put("规格型号",smartProduct.getSmartProductModel().getModel());
        map.put("打印日期",(new Date()).toString());

        SmartProductTest smartProductTest=new SmartProductTest();
        smartProductTest.setProductId(smartProduct.getCode());
        List<SmartProductTest> smartProductTests=smartProductTestService.selectSmartProductTestList(smartProductTest);
        for(SmartProductTest item : smartProductTests){
            String name="  ";
            Map<String,String> mapItem=new HashMap<>();
            //添加功能测试
            if(item.getState().contains("检验功能")){
                name="功能测试";
                mapItem.put("检验日期",item.getCreateDate().toString());
            }
            //添加高压测试
            if(item.getState().contains("高压测试")){
                name="高压测试";
            }
            //添加检验测试
            if(item.getState().contains("检验测试")){
                name="检验测试";
            }
            mapItem.put("电压",item.getVoltage());
            mapItem.put("电流",item.getCurrent());
            mapItem.put("日期",item.getCreateDate().toString());
            map.put(name,mapItem);
        }
        SmartModData smartModData=new SmartModData();
        smartModData.setType("gdf");
        smartModData.setProductId(smartProduct.getCode());
        List<SmartModData> smartModDataList=smartModDataService.selectSmartModDataList(smartModData);
        if(smartModDataList.size()>0){
            map.put("电流电压曲线",smartModDataList.get(0).getData());
        }
        return map;
    }

    /**
     * 批量删除产品
     * 
     * @param ids 需要删除的产品主键
     * @return 结果
     */
    @Override
    public int deleteSmartProductByIds(Long[] ids)
    {
        return smartProductMapper.deleteSmartProductByIds(ids);
    }

    /**
     * 删除产品信息
     * 
     * @param id 产品主键
     * @return 结果
     */
    @Override
    public int deleteSmartProductById(Long id)
    {
        return smartProductMapper.deleteSmartProductById(id);
    }
}
